import request from '@/utils/request'
import type { ExportInsuranceOrdersReqDto, ReceiptDto } from './types'
import type { PageDto, PagesDto, PageReqDto } from '../types'

/**
 * 导出客户列表
 *
 * @param params 参数对象
 * @param params.queryMonth 查询月份
 * @param params.insureCompanyType 保险公司类型
 * @param params.companyId 公司ID
 * @returns 返回 Promise 对象，解析后为字符串类型的导出文件内容
 */
export function exportClientList(params: {
    queryMonth: string
    insureCompanyType: string
    companyId: number
}): Promise<string> {
    return request.get('/crm-prod/period-insur/ensure-cost-log/exportClientList', {
        params
    })
}

/**
 * 导出日日保，团意日保客户
 * @param params 
 * @returns 
 */
export function exportClientDailyAndGroup(params: {
    queryMonth?: string
    insureCompanyType: string
    companyId?: number
}): Promise<string> {
    return request.get('/crm-prod/wesure/client/export-list', {
        params
    })
}

/**
 * 导出长期保客户
 * @param params 
 * @returns 
 */
export function exportClientPeriod(params: {
    queryMonth?: string
    insureCompanyType: string
    companyId?: number
}): Promise<string> {
    return request.get('/crm-prod/period-insur/ensure-cost-log/exportClientList', {
        params
    })
}


/**
 * 导出日保险订单
 *
 * @param params 导出保险订单请求参数
 * @returns 返回导出文件的路径
 */
export function exportDayInsuranceOrders(params: ExportInsuranceOrdersReqDto): Promise<string> {
    return request.get('/crm-prod/wesure/client/export', {
        params
    })
}

/**
 * 导出长期保险订单
 *
 * @param params 请求参数
 * @returns 返回导出结果的URL地址
 */
export function ExportLongInsuranceOrders(params: Omit<ExportInsuranceOrdersReqDto, 'productType'>): Promise<string> {
    return request.get('/crm-prod/period-insur/ensure-cost-log/exportClientCost', {
        params
    })
}

/**
 * 获取收款客户列表
 *
 * @param params 请求参数
 * @param params.channelId 渠道ID
 * @param params.PageReqDto 分页请求参数
 * @returns 返回一个Promise对象，解析后得到收据列表的分页信息
 */
export function getReceiptList(params: { channelId?: number } & PageReqDto): Promise<PageDto<ReceiptDto>> {
    return request.get('/crm-prod/saas/note/receipt-info/list', {
        params
    })
}

/**
 * 通过支付宝提现
 *
 * @param params 参数对象
 * @param params.companyId 公司ID
 * @param params.amount 提现金额
 * @returns 返回提现结果字符串
 */
export const alipayWithdraw = async (params: {
    companyId: number
    amount: number
}): Promise<string> => {
    return request.get('/crm-prod/alipay/account/account-transfer-account', {
        params
    })
}

// 长期保查询明天扣费情况
export const getTomorrowEnsureCost = async (params: {
    companyId: number
}): Promise<number> => {
    return request.get('/crm-prod/period-insur/client/queryTomorrowEnsureCost', {
        params
    })
}

// 长期保保险状态修改（如拒保）
export const editPeriodStatus = async (data: {
    companyId: number
    refusalGuaranteeStatus: 0 | 1 // 是否拒保 0 否 1 是
    userType: number 
}): Promise<string> => {
    return request.put('/crm-prod/period-insur/client/edit-status-insur', data)
}

// 日日保保险状态修改（如拒保）
export const editWesureStatus = async (data: {
    companyId: number
    refusalGuaranteeStatus: 0 | 1 // 是否拒保 0 否 1 是
    blockedAccount: 0 | 1 // 是冻结账户 0 否 1 是
    antiDatedPolicy?: 0 | 1 // 倒投保 0 否 1 是
}): Promise<string> => {
    return request.put('/crm-prod/wesure/client/edit-status', data)
}